#!/bin/bash

# 语音情感识别系统启动脚本
# 功能：同时启动后端API服务和前端Web界面
# 使用方法：./start.sh 或 bash start.sh

echo "=========================================="
echo "🎙️  语音情感识别系统启动脚本"
echo "=========================================="

# 检查Python是否安装
if ! command -v python &> /dev/null; then
    echo "❌ Python未安装，请先安装Python 3.8+"
    exit 1
fi

# 检查Node.js是否安装
if ! command -v node &> /dev/null; then
    echo "❌ Node.js未安装，请先安装Node.js 18+"
    exit 1
fi

# 检查npm是否安装
if ! command -v npm &> /dev/null; then
    echo "❌ npm未安装，请先安装npm"
    exit 1
fi

echo "✅ 环境检查通过"

# 创建日志目录
mkdir -p logs

# 启动后端服务
echo ""
echo "🚀 启动后端API服务..."
cd backend

# 检查虚拟环境
if [ ! -d "venv" ]; then
    echo "📦 创建Python虚拟环境..."
    python -m venv venv
fi

# 激活虚拟环境
if [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then
    source venv/Scripts/activate
else
    source venv/bin/activate
fi

# 安装依赖
echo "📦 安装Python依赖..."
pip install -r requirements.txt

# 启动后端服务（后台运行）
echo "🔥 启动FastAPI服务..."
nohup python run.py > ../logs/backend.log 2>&1 &
backend_pid=$!
echo "后端服务PID: $backend_pid"
echo "💡 可使用 Ctrl+C 或 kill $backend_pid 停止后端服务"

cd ..

# 等待后端服务启动
echo "⏳ 等待后端服务启动..."
sleep 5

# 检查后端服务是否正常
if curl -s http://localhost:8000/health > /dev/null; then
    echo "✅ 后端服务启动成功"
else
    echo "⚠️  后端服务可能未正常启动，请检查logs/backend.log"
fi

# 启动前端服务
echo ""
echo "🚀 启动前端Web界面..."
cd webui

# 安装依赖
echo "📦 安装Node.js依赖..."
npm install

# 启动前端服务（后台运行）
echo "🔥 启动Next.js服务..."
nohup npm run dev > ../logs/frontend.log 2>&1 &
frontend_pid=$!
echo "前端服务PID: $frontend_pid"
echo "💡 可使用 Ctrl+C 或 kill $frontend_pid 停止前端服务"

cd ..

# 等待前端服务启动
echo "⏳ 等待前端服务启动..."
sleep 10

echo ""
echo "=========================================="
echo "🎉 系统启动完成！"
echo "=========================================="
echo "🌐 前端界面: http://localhost:3000"
echo "🔧 后端API: http://localhost:8000"
echo "📚 API文档: http://localhost:8000/docs"
echo ""
echo "📊 服务状态:"
echo "  - 后端服务PID: $backend_pid"
echo "  - 前端服务PID: $frontend_pid"
echo ""
echo "📋 常用命令:"
echo "  - 查看后端日志: tail -f logs/backend.log"
echo "  - 查看前端日志: tail -f logs/frontend.log"
echo "  - 停止单个服务: kill $backend_pid (后端) 或 kill $frontend_pid (前端)"
echo "  - 停止所有服务: kill $backend_pid $frontend_pid 或运行 ./stop.sh"
echo "  - 使用Ctrl+C: 在服务运行窗口按 Ctrl+C 优雅停止"
echo ""
echo "⚠️  注意：关闭终端前请手动停止服务进程"
echo "=========================================="

# 保存PID到文件
echo "$backend_pid" > logs/backend.pid
echo "$frontend_pid" > logs/frontend.pid

echo "🔖 进程ID已保存到logs目录"
echo "💡 使用 ./stop.sh 可以停止所有服务" 